package com.zjsru.oneday202208;

/**
 * @Author: likew
 * @Date: 2022/8/19
 *  在既定时间做作业的学生人数
 *
 * 输入：startTime = [1,2,3], endTime = [3,2,7], queryTime = 4
 * 输出：1
 * 解释：一共有 3 名学生。
 * 第一名学生在时间 1 开始写作业，并于时间 3 完成作业，在时间 4 没有处于做作业的状态。
 * 第二名学生在时间 2 开始写作业，并于时间 2 完成作业，在时间 4 没有处于做作业的状态。
 * 第三名学生在时间 3 开始写作业，预计于时间 7 完成作业，这是是唯一一名在时间 4 时正在做作业的学生。
 *
 */
public class BusyStudent {
    /**
     * 枚举
     */
    
    public int busyStudent(int[] startTime, int[] endTime, int queryTime) {
        int ans = 0;
        int len = startTime.length;
        for (int i = 0; i < len; i++) {
            if(startTime[i] <= queryTime && endTime[i] >= queryTime){
                ans++;
            }
        }
        return ans;
    }
    
    /**
     * 差分
     */
    public int busyStudent1(int[] startTime, int[] endTime, int queryTime) {
        int[] c = new int[1010];
        for (int i = 0; i < startTime.length; i++) {
            c[startTime[i]]++;
            c[endTime[i] + 1]--;
        }
        for (int i = 1; i <= queryTime; i++) {
            c[i] += c[i - 1];
        }
        return c[queryTime];
    }
    
    public static void main(String[] args) {
        BusyStudent busyStudent = new BusyStudent();
        int[] startTime = new int[]{1,2,3};
        int[] endTime = new int[]{3,2,7};
        int queryTime = 4;
        System.out.println(busyStudent.busyStudent1(startTime, endTime, queryTime));
    }
}
